package com.kfm.set;

import com.kfm.exec.Person;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetDemo {

    public static void main(String[] args) {

        TreeSet set = new TreeSet(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                int res = ((Person) o1).getAge() - ((Person) o2).getAge();
                if (res == 0) {
                    return ((Person) o1).equals(o2) ? 0 : -1;
                }
                return res;
            }
        });
        // set.add(1);
        // set.add(10);
        // set.add(20);
        // set.add(11);
        // set.add(17);
        // set.add(18);
        // 1. 放的元素 需要拥有自然排序的能力，或者 创建TreeSet对象 传递比较器
        // 2. 不能存在null元素
        // 3. 不能存在重复元素
        // 4. 迭代器 已经排好序的迭代器 （升序）iterator() （降序） descendingIterator()
        Person p1 = new Person("sky", 18, '男');
        Person p2 = new Person("zyp", 17, '女');
        Person p3 = new Person("xwq", 21, '男');
        Person p4 = new Person("bxy", 22, '女');
        Person p5 = new Person("yyp", 23, '女');
        set.add(p1);
        set.add(p2);
        set.add(p3);
        set.add(p4);
        set.add(p5);
        // set.add(null);
        Iterator iterator = set.descendingIterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
        System.out.println(set.ceiling(p2)); // 大于等于本身的最小元素
        System.out.println(set.higher(p2));  // 大于本身的最小元素
        System.out.println(set.floor(p2));   // 小于等于本身的最大元素
        System.out.println(set.lower(p2));   // 小于本身的最大元素

    }
}
